The invention relates to the field of networking. In particular, the invention relates to scaling network content according to data-recipient characteristics such as processing ability and client-to-server network throughput.
The following glossary of terms is intended to clarify the meaning of acronyms, terms or phrases used in the description and claims that follow. This section is not meant to be exhaustive. Unless otherwise indicated, these explanations augment, not supplant, term usage. Please note that some of these terms, even though not designated, may be trade marks, and these marks are the property of their respective owners.
Processor or microprocessor means the Central Processing Unit (CPU) of a computing device. Examples include the following processors and equivalents: the DEC Alpha, a RISC (Reduced Instruction Set Computer) processor from Digital Equipment Corporation of Maynard, Mass.; PowerPC, a RISC processor jointly designed by Motorola of Schaumberg, Ill., IBM of Armonk, N.Y., and Apple Computer of Cupertino, Calif.; AMD processors from Advanced Micro Devices of Sunnyvale, Calif.; Cyrix processors by Cyrix of Richardson, Tex.; MIPS processors from MIPS Technologies, Inc.; and, Intel architecture processors from Intel Co. of Santa Clara, Calif., which include the 80286, 80386, 80486, Pentium(copyright) processors, and their variants, equivalents, and successors.
ISDN means Integrated Services Digital Network and equivalents. Frame Relay means technology for implementing Wide Area Networking (WAN). LAN means Local Area Network. JTC means Joint Technical Committee, a standardization body including the ISO (International Organization for Standardization) and IEC (International Electrotechnical Commission), organizations responsible for creating and maintaining international standards. TCP/IP means Transmission Control Protocol over Internet Protocol, and includes related protocols such as ICMP, the Internet Control Message Protocol extension to TCP/IP. IPX means Internetwork Packet eXchange, and includes related protocols such as SPX (Sequenced Packet Exchange), a transport layer protocol built on top of IPX. AppleTalk generally refers to networking protocols used by Apple Computer systems.
SGML means Standard Generalized Markup Language and equivalents, an ISO defined language for representing relationships between a document""s content and structure. HTML means Hypertext Markup Language and equivalents, a document format based on SMGL that uses xe2x80x9ctagsxe2x80x9d to flag formatting and structure. FTP means File Transfer Protocol, a client-server protocol (and application program) for file transfer over a network. Gopher and WAIS represent examples of searchable distributed document retrieval systems for locating data including text, images, sounds, etc.
PCI means Peripheral Component Interconnect, a particular example of high-performance buses for coupling peripherals to a computing device and its processor. AGP means Accelerated Graphics Port. VESA means the VESA Local Bus defined by the Video Electronics Standards Association. ISA means Industry Standard Architecture, EISA means Extended Industry-Standard Architecture, and MCA means Micro Channel Architecture.
Client means a computing device or computer program (executing on a computing device) that requests services from a server. Server means a computing device, or computer program executing on a computing device, that provides some service to client programs or client systems. The client and server communicate over a communication link (e.g., a network). Communication is according to a protocol, which may be a message based protocol. The server may operate continuously, or be initialized and unloaded as needed (e.g., through manual invocation or by a program-loader in response to client connection attempts). There may be several clients and servers, each taking on the role of client or server, depending on context.
In typical client-server environments, a server maintains information in local storage for eventual retrieval by clients. In small networks, such as an office intranet, one can control the characteristics of the computers being networked together, and ensure clients have adequate processing resources and network throughput to process data sent by the server. With the advent of low-cost public-access networks, such as the Internet, it has become increasingly common to network together many different computer architectures. Now, unknown clients of unknown capabilities can connect to the server, and it is no longer feasible to regulate the characteristics of the incoming client. (Although this description focuses on Internet-based client-server communication, the principles herein apply to other networking contexts as well.)
For example, the server may have a web page containing a link to complex video data that requires significant client resources to process. But, the server cannot control contact from an underpowered client having insufficient resources to process server data. When such a client tries to receive and process the data, it will be unable to effectively do so (e.g., playback will not be smooth); such processing failures are generally blamed on the server, and alienate current and potential customers.
To avoid such problems, as a stop-gap measure, servers have been configured to provide a contacting client the option of electing to receive data from different sources, where each selection is based on the client""s theoretical network link speed. For example, a client might be presented with a web page indicating xe2x80x9cClick here if you have a T1 line to the Internet,xe2x80x9d or xe2x80x9cClick here for 128K ISDN,xe2x80x9d or xe2x80x9cClick here if you have a 56K connection,xe2x80x9d etc. (Note that the terms xe2x80x9cclientxe2x80x9d and xe2x80x9cserverxe2x80x9d actually refer to computing devices, and references to client or server actions, such as xe2x80x9cselectingxe2x80x9d web page items, it intended to refer to a user, control program, or alternate input source that in fact manipulates the computing device to effect the indicated result.)
One problem with this stop-gap solution is that it does not address whether the client has support for processing the received data, e.g., the network link is fast enough, but the client lacks sufficient memory or processing power to digest the received data. A second problem is the assumption that the client actually knows its network link speed. In corporate environments, clients frequently access networks through distant firewalls, and it can be unclear whether they are connecting through Frame Relay, ISDN dial-out, intranet, or to a xe2x80x9csmartxe2x80x9d system that dynamically selects a xe2x80x9cfastestxe2x80x9d of several network routes. A third, subtler problem, is that assuming the client knows its theoretical network link speed, this information is unhelpful if the client""s realizable data throughput to the server is different. That is, if the client has a T1 link to the Internet, but the effective throughput is only 56 K-bits (56K), then selecting the T1 source option will result in poor performance.
What is needed, then, is a way for the server to accurately determine the client""s system configuration (e.g., processor speed, memory configuration, etc.), effective network speed, at the time of contact from the client. This would allow the server to tailor its output to meet the capabilities of each incoming client.
The invention provides for servicing a client. A request is received from a client having certain capabilities. This request is automatically satisfied in a manner tailored to the capabilities of the client.